// 注意：此脚本需要在Node.js环境下运行，使用以下命令执行：
// node test-cart-delete-fixed.js

const axios = require('axios');

// 设置axios基础配置 - 注意这里使用的是5173端口，与vite.config.js中的配置一致
const API_BASE_URL = 'http://localhost:5173';

// 创建axios实例，与前端代码保持一致的配置
const http = axios.create({
  baseURL: API_BASE_URL,
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
});

// 添加请求拦截器，用于检查和记录实际发送的请求方法
http.interceptors.request.use(
  (config) => {
    console.log('==============================');
    console.log('请求URL:', config.url);
    console.log('请求方法:', config.method.toUpperCase());
    console.log('请求参数:', config.params || config.data);
    console.log('请求头:', config.headers);
    console.log('==============================');
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 测试删除购物车商品功能
async function testDeleteCartItem() {
  console.log('开始测试购物车删除功能...');
  console.log(`使用API基础URL: ${API_BASE_URL}`);
  console.log('注意：确保Vite开发服务器正在运行（npm run dev）');
  console.log('注意：确保后端服务正在8081端口运行');
  
  try {
    // 使用DELETE方法调用删除接口
    console.log('发送DELETE请求到 /carts/delete');
    const deleteResponse = await http.delete('/carts/delete', {
      params: {
        ids: [1] // 使用一个测试ID
      }
    });
    
    console.log('删除响应:', {
      code: deleteResponse.data.code,
      message: deleteResponse.data.message,
      data: deleteResponse.data.data
    });
    
    console.log('\n测试完成！如果收到404或500错误，可能是后端服务未启动或ID不存在。');
    console.log('但关键是要确认请求方法确实是DELETE而不是POST。');
  } catch (error) {
    console.error('请求失败:', error.message);
    if (error.response) {
      console.error('响应状态码:', error.response.status);
      console.error('响应数据:', error.response.data);
    } else if (error.request) {
      console.error('没有收到响应，请检查后端服务是否启动');
    } else {
      console.error('请求配置错误:', error.message);
    }
    console.log('\n即使请求失败，只要请求方法显示为DELETE，就说明前端配置正确。');
  }
}

// 执行测试
if (require.main === module) {
  console.log('请确保已启动以下服务:');
  console.log('1. Vite开发服务器: npm run dev (运行在5173端口)');
  console.log('2. 后端API服务: 运行在8081端口\n');
  
  // 延迟执行，给用户时间阅读提示
  setTimeout(() => {
    testDeleteCartItem();
  }, 2000);
}

module.exports = { testDeleteCartItem };